Go json and embedded struct


使用 embedded struct 做 json 的 marshal 跟 unmarshal 時,json 欄位會省略 struct embedded 欄位的中間名,以比較簡潔的形式呈現。如果 struct 有寫出欄位名稱,json 欄位就會多那一層。

使用 embedded struct

type Serving struct {
    Amount float64
    Unit   string
}

type Food struct {
    Name string
    Serving    // embedded struct
    NutritionInfo
    Comment string
}

marshal 結果:

{
  "Name":"Banana",
  "Amount":100,
  "Unit":"g",
  "Calorie":0,
  "Carb":0,
  "Fat":0,
  "Protein":0,
  "Comment":""
}

不使用 embedded struct

type Food struct {
    Name string
    Serving Serving    // not embedded struct
    NutritionInfo
    Comment string
}

marshal 結果:

{
  "Name":"Banana",
  "Serving":
  {
    "Amount":100,
    "Unit":"g"
  },
  "Calorie":0,
  "Carb":0,
  "Fat":0,
  "Protein":0,
  "Comment":""
}

不用 embeded struct 就會有一層 Serving,用 embedded struct 就會省略 Serving 這層。

#GO






你可能感興趣的文章

資料傳輸物件與設計模式之間的使用

資料傳輸物件與設計模式之間的使用

7. Adapter

7. Adapter

曾經的前端  library 霸主 :  jQuery

曾經的前端 library 霸主 : jQuery






留言討論